import logging
import unittest
import requests
import utils
from api.login import LoginApi
from api.trust_account import TrustAccountApi


class TestWherherifLogin(unittest.TestCase):

    def setUp(self) -> None:
        self.session = requests.session()
        self.login_api = LoginApi(self.session)
        self.approve_realname = TrustAccountApi(self.session)

    def tearDown(self) -> None:
        self.session.close()

    # 实名认证成功（输入正确的信息和身份证）
    def test01_approve_realname(self):
        # 测试数据
        realname = "李恩"
        card_id = "110101199003075816"
        keywords = "13203003591"
        password = "hyc123456"

        # 调用接口
        res_login = self.login_api.login(keywords, password)
        res_approve_realname = self.approve_realname.approve_realname(realname, card_id)

        # 断言
        utils.common_assert(self, res_login, 200, 200, "登录成功")
        utils.common_assert(self, res_approve_realname, 200, 200, "提交成功")

        # 输出日志
        logging.info("登录的结果为：{}".format(res_login.json()))
        logging.info("实名认证的结果为：{}".format(res_approve_realname.json()))


    # 实名认证失败（姓名为空）
    def test02_approve_realname_fail_name_null(self):
        # 测试数据
        realname = None
        card_id = "110101199003075816"
        keywords = "13203003591"
        password = "hyc123456"

        # 调用接口
        res_login = self.login_api.login(keywords, password)
        res_approve_realname = self.approve_realname.approve_realname(realname, card_id)

        # 断言
        utils.common_assert(self, res_login, 200, 200, "登录成功")
        utils.common_assert(self, res_approve_realname, 200, 100, "姓名不能为空")

        # 输出日志
        logging.info("登录的结果为：{}".format(res_login.json()))
        logging.info("实名认证的结果为：{}".format(res_approve_realname.json()))

    # 实名认证失败（身份证为空）
    def test03_approve_realname_fail_card_null(self):
        # 测试数据
        realname = "李白"
        card_id = None
        keywords = "13203003591"
        password = "hyc123456"

        # 调用接口
        res_login = self.login_api.login(keywords, password)
        res_approve_realname = self.approve_realname.approve_realname(realname, card_id)

        # 断言
        utils.common_assert(self, res_login, 200, 200, "登录成功")
        utils.common_assert(self, res_approve_realname, 200, 100, "身份证号码不能为空")

        # 输出日志
        logging.info("登录的结果为：{}".format(res_login.json()))
        logging.info("实名认证的结果为：{}".format(res_approve_realname.json()))

    #获取认证信息
    def test04_get_approve_info(self):
        # 测试数据
        keywords = "13203003591"
        password = "hyc123456"

        # 调用接口
        res_login = self.login_api.login(keywords, password)
        res_get_trust_register = self.approve_realname.get_approve_info()

        # 断言
        utils.common_assert(self, res_login, 200, 200, "登录成功")
        self.assertEqual(200,res_get_trust_register.status_code)

        # 输出日志
        logging.info("登录的结果为：{}".format(res_login.json()))
        logging.info("实名认证的结果为：{}".format(res_get_trust_register.json()))
